/*!
 * 文件名称： bsp_led.c
 * 描    述： LED interface
 * 版本：     2023-12-03, V1.0
*/

/*
* GD32F303东方红开发板V1.0
* 淘宝商城：   https://juwo.taobao.com
* 技术交流：   https://www.gd32bbs.com/ask/
* 视频学习：   https://space.bilibili.com/475462605
* 微信公众号： gd32bbs
* Copyright    苏州聚沃电子科技有限公司
* 版权所有，盗版必究。
*/

#include "bsp_led.h"
#include "driver_gpio.h"


/* LED定义注册 */
LED_DEF(LED0,E,5,SET);      /* PE5定义为LED0，LED OFF的IO初始态高 */
LED_DEF(LED1,E,6,SET);      /* PE6定义为LED1 */

const void* LED_INIT_GROUP[]={&LED0,&LED1}; 

#define LED_INIT_SIZE  sizeof(LED_INIT_GROUP)/sizeof(void*)

/*!
* 说明     LED初始化函数
* 输入[1]  LEDx：LED结构体指针 @LED0/LED1
* 返回值   无
*/
void bsp_led_init(typdef_gpio_general *LEDx)
{
    driver_gpio_general_init(LEDx);
}
/*!
* 说明     初始化所有注册的LED
* 输入     无
* 返回值   无
*/
void bsp_led_group_init(void)
{
    uint8_t i;
    for(i=0;i<LED_INIT_SIZE;i++)
    {
        bsp_led_init(((typdef_gpio_general *)LED_INIT_GROUP[i]));    
    }
}


/*!
* 说明     点亮LED函数
* 输入[1]  LEDx：LED结构体指针 @LED0/LED1
* 返回值   无
*/
void bsp_led_on(typdef_gpio_general *LEDx)
{
    driver_gpio_pin_write(LEDx,(bit_status)!(LEDx->default_state));
}

/*!
* 说明     熄灭LED函数
* 输入[1]  LEDx：LED结构体指针 @LED0/LED1
* 返回值   无
*/
void bsp_led_off(typdef_gpio_general *LEDx)
{
    driver_gpio_pin_write(LEDx,LEDx->default_state);
}

/*!
* 说明     反转LED函数
* 输入[1]  LEDx：LED结构体指针 @LED0/LED1
* 返回值   无
*/
void bsp_led_toggle(typdef_gpio_general *LEDx)
{
    driver_gpio_pin_toggle(LEDx);
}
